Option Strict Off
Option Explicit On
Module Declares
	' This module declares all the public variables and API calls used in the program
	
	Public Declare Function GetTopWindow Lib "user32.dll" (ByVal hwnd As Integer) As Integer
	
	'The next two declares are used in the capture routine to check the avi file is free to load to the media player.(slow disks can cause a lock up on some systems)
	Public Declare Function CreateFile Lib "kernel32"  Alias "CreateFileA"(ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As Integer
	
	Public Declare Function CloseHandle Lib "kernel32" (ByVal hFile As Integer) As Integer
	
	'Used to detect whether the program has focus or not, to avoid trigering captures etc. when the user is in another program
	Public Declare Function GetFocus Lib "user32" () As Integer
	
	'Gets the handle of the currently active window
	Public Declare Function GetActiveWindow Lib "user32" () As Integer
	
	'API timer function (fairly good accuracy)
	Public Declare Function GetTickCount Lib "kernel32" () As Integer
	
	'Gets time in milliseconds since program started. Is used in editor window to calculate frame playback rate
	Public Declare Function timeGetTime Lib "winmm.dll" () As Integer
	
	'API that brings any window to the front
	Public Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Integer) As Integer
	
	Public Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Integer) As Integer
	
	'API Sends a message to a window or control
	'UPGRADE_ISSUE: Declaring a parameter 'As Any' is not supported. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"'
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Object) As Integer
	
	'API Releases mouse capture from a window and restores normal mouse operation
	Public Declare Function ReleaseCapture Lib "user32" () As Integer
	Public Const WM_NCLBUTTONDOWN As Integer = &HA1
	Public Const HTCAPTION As Short = 2
	
	'The SetWindowRgn function sets the window region of a window. The window region determines the area within the window where the operating system permits drawing.
	'The operating system does not display any portion of a window that lies outside of the window region.
	Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Integer, ByVal hRgn As Integer, ByVal bRedraw As Boolean) As Integer
	
	'Retrieves the Red Green Blue value at a specified location
	Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal X As Integer, ByVal Y As Integer) As Integer
	
	'Retrieves the handle of an object
	Public Declare Function GetDC Lib "user32" (ByVal hwnd As Integer) As Integer
	
	'The CreateRectRgn function creates a rectangular region.
	Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer) As Integer
	
	'The CombineRgn function combines two regions and stores the result in a third region. The two regions are combined according to the specified mode.
	Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Integer, ByVal hSrcRgn1 As Integer, ByVal hSrcRgn2 As Integer, ByVal nCombineMode As Integer) As Integer
	
	'Deletes an object, bitmap, region etc. to free up memory resources
	Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Integer) As Integer
	
	'Finds the SCREEN location of the cursor, returns values to POINTAPI structure
	'UPGRADE_WARNING: Structure POINTAPI may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
	Public Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Integer
	
	Public Structure POINTAPI
		Dim X As Integer
		Dim Y As Integer
	End Structure
	
	Public Structure RECT
		'UPGRADE_NOTE: Left was upgraded to Left_Renamed. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'
		Dim Left_Renamed As Integer
		Dim Top As Integer
		'UPGRADE_NOTE: Right was upgraded to Right_Renamed. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'
		Dim Right_Renamed As Integer
		Dim Bottom As Integer
	End Structure
	
	'Gets the bounding rectangle of any window
	'UPGRADE_WARNING: Structure RECT may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
	Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Integer, ByRef lpRect As RECT) As Integer
	
	'API to set pixels to a colour. used for the markers on the live window
	Public Declare Function SetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal Color As Integer) As Integer
	
	'API that blends one image over another. Used for onion skinning
	Public Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Integer, ByVal lInt As Integer, ByVal lInt As Integer, ByVal lInt As Integer, ByVal lInt As Integer, ByVal hdc As Integer, ByVal lInt As Integer, ByVal lInt As Integer, ByVal lInt As Integer, ByVal lInt As Integer, ByVal BLENDFUNCT As Integer) As Integer
	
	'API call that copies data in memory from one area to another
	'UPGRADE_ISSUE: Declaring a parameter 'As Any' is not supported. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"'
	'UPGRADE_ISSUE: Declaring a parameter 'As Any' is not supported. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"'
    Public Declare Sub RtlMoveMemory Lib "kernel32.dll" (ByRef Destination As Object, ByRef Source As Object, ByVal Length As Integer)
	
	'blitting
	Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As Integer) As Integer 'hDestDC:    The destination Device Context.
	
	'Stretch blitting. SetStretchBltMode enables accurate stretching without pixellation which normally occurs
	Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Integer) As Integer
	Public Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Integer, ByVal hStretchMode As Integer) As Integer
	'UPGRADE_NOTE: STRETCHMODE was changed from a Constant to a Variable. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C54B49D7-5804-4D48-834B-B3D81E4C2F13"'
	'UPGRADE_ISSUE: Constant vbPaletteModeNone was not upgraded. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="55B59875-9A95-4B71-9D6A-7C294BF7139D"'
	'UPGRADE_ISSUE: PaletteModeConstants object was not upgraded. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6B85A2A7-FE9F-4FBE-AA0C-CF11AC86A305"'
    'Public STRETCHMODE As PaletteModeConstants = vbPaletteModeNone 'You can find other modes in the "PaletteModeConstants" section of your Object Browser

    Public Enum StretchMode
        STRETCH_ANDSCANS = 1
        STRETCH_ORSCANS = 2
        STRETCH_DELETESCANS = 3
        STRETCH_HALFTONE = 4
    End Enum

	'Converts the SCREEN Location of a point to a point relative to the supplied form or window, it adjust the value of the supplied POINTAPI structure
	'UPGRADE_WARNING: Structure POINTAPI may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
	Public Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Integer, ByRef lpPoint As POINTAPI) As Integer
	
	'Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer ' API call to get when keys are pressed
	'Public Const KEY_DOWN As Integer = &H1000
	'Public Const KEY_UP As Integer = &H1001
	'Public Const Toggle As Integer = &H1
	
	'API for getting keyboard and mouse input. This is goood as it gets the status directly at the time the call is made.
	Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Short) As Short
	Public Const VK_LBUTTON As Integer = &H1
    Public Const VK_RBUTTON As Integer = &H2

    Public Const vbWhiteness As Integer = &H10
    Public Const vbSrcCopy As Integer = &HCC0020
	
	
	
	
	
	
	'creating buffers / loading sprites
	Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer
	
	Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Integer) As Integer
	
	Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Integer, ByVal hObject As Integer) As Integer
	
	Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Integer) As Integer
	
	Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
	


	
	Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Integer, ByVal bRevert As Integer) As Integer
	
	Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
	
	Public Const MF_BYPOSITION As Integer = &H400
	
	
	Public Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean
	
	Public Declare Function capCreateCaptureWindowA Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Short, ByVal hWndParent As Integer, ByVal nID As Integer) As Integer
	
	Public Structure BLENDFUNCTION 'The flag array for the alphablend function
		Dim BlendOp As Byte
		Dim BlendFlags As Byte
		Dim SourceConstantAlpha As Byte
		Dim AlphaFormat As Byte
	End Structure
	
	Public AlphaFlags As BLENDFUNCTION 'An instance of the above type to be used in alphablending (onion skinning)
	Public AlphaFlagsAsLong As Integer 'Alpha blend API call requires the blendfunction type to be converted to a long value
	Public StopStatus As Double 'The status of the stop button -1 = bring play to a halt, 1 = carry on playing
	
	
	Public iDevice As Integer 'The current input device ID number
	
	Public AspRatio As Single 'The aspect ratio of the capture window (Capture window requires inclusion of titlebar in aspect ratio)
	'Public AspRatioPlayback As Single                                 'The aspect ratio of the playback window (playback window does not require inclusion of titlebar in aspect ratio)
	Public TitleHeight As Integer 'The height of the title bar of the capture and playback windows in pixels
	Public PixCol As Integer 'The returned colour of the pixel
	Public Green, Red, Blue As Byte 'The RGB colours extracted from the above variable
	Public MousePoint As POINTAPI 'This value holds the x and y position of the pointer.
	Public Hotspot_Source As Integer 'The handle to the bitmap DC in memory that holds the "Hotspot" image for the Camera Source window
	Public Hotspot_Buttons As Integer 'The handle to the bitmap DC in memory that holds the "Hotspot" image for the Buttons window
	Public Hotspot_Settings As Integer 'The handle to the bitmap DC in memory that holds the "Hotspot" image for the Settings window
	Public Hotspot_Editor As Integer 'The handle to the bitmap DC in memory that holds the "Hotspot" image for the Editor window
	Public LMouseButStatus As Short 'Is the left mouse button down up etc.
	Public mblnRunning As Boolean 'A flag - True = main loop is running
	Public Result As Integer 'To hold a returned value. Generally used throughout program.
	Public FunctionOK As Boolean 'Returned value from a function (functions return true if they have executed ok)
	Public FrameNum As Integer 'The total number of frames captured so far
	Public OnionMode As Double 'The status of onion skinning -1 = off +1 = on
	Public OnionLevel As Double 'The level of transparency of the onion skin
	Public SavePath As String 'Stores the full path of the avi file, ie D:\Visual Basic\Helium_Frog_2_02\Captured_Frames\
	Public ProjName As String 'Stores the avi filename, less JPG.avi extension, ie 2008_12_11_Animation_002
	Public FrameString As String 'A string which is used to construct the filename for saving and loading
	Public PlayBackWidth As Integer 'The width of the image in the playback window
	Public PlayBackHeight As Integer 'The heigth of the image in the playback window
	Public CaptureWidth As Integer 'The width of the captured image in pixels
	Public CaptureHeight As Integer 'The height of the captured image in pixels
	Public CaptureQuality As Integer 'The quality of the captured jpegs that are used for playback / avi appending
	Public FPS As Integer 'Frames per second
	Public UtilityFPS As Integer 'The frames per second that is used only when in the utility window
	Public MergeBuffer As Integer
	Public ButtonRect As RECT 'The rectangle that bounds the Button Box
	Public LoopLength As Short 'The number of frames that the loop command goes back from end of video to play.
	Public FrameAvgDepth As Short 'The number of frames that the captured image is averaged over (See UserInput module - Capture)
	Public FrameAvgDelay As Integer 'The delay time in milliseconds between sampled frames (See UserInput module - Capture)
	Public FormAnimatorTop As Integer 'The Y position of the Buttons window
	Public FormAnimatorLeft As Integer 'The X position of the Buttons window
	Public FormCaptureWidth As Integer
	Public FormCaptureTop As Integer
	Public FormCaptureLeft As Integer
	Public OutputBmpFramesYesNo As Boolean 'Does the program output individual bitmaps?
	Public OutputJpgFramesYesNo As Boolean 'Does the program output individual Jpegs?
	Public OutputTifFramesYesNo As Boolean 'Does the program output individual Tiffs?
	Public OutputGifFramesYesNo As Boolean 'Does the program output individual Gifs?
	Public OutputPngFramesYesNo As Boolean 'Does the program output individual PNGs?
	Public FrameNumberStampYesNo As Boolean 'Does the avi have frame number stamped on bitmap in top left corner?
	Public JpegQuality As Integer 'The quality of the output jpegs 0 to 100
	Public Skin As String 'The name of the skin that is used
	Public CaptureSound As String 'The name of the sound that is played when the capture button is pressed
	Public ActiveWindowIs As String 'Holds string to tell program which window is open or active. Program uses this to diable / enable hotkeys and buttons
	'Has Values  "ButtonWindow" "EditorWindow" "UtilitiesWindow" "SettingsWindow"
	Public RegionSource As Integer 'A value that holds the transparent "mask" of the Source picturebox
	Public RegionButtons As Integer 'A value that holds the transparent "mask" of the Buttons picturebox
	Public RegionSettings As Integer 'A value that holds the transparent "mask" of the Settings picturebox
	Public RegionUtilities As Integer
	Public RegionEditor As Integer
	Public SoundsOnOff As Boolean 'Whether capture sounds are on or off
	Public Version As String 'The version number of the software
	Public DiagnosticsYesNo As Boolean 'A flag to determine whether the diagnosis window should be displayed
	Public LastCamera As String 'The name of the last camera that was used
	Public NumFramesPerClick As Integer 'The Number of Frames sent to the .avi file with each shutter click (capture on twos etc.)
	Public ValidFilename As String 'A string to hold a valid filename
	
	Public RotoScopeBasicAudio As QuartzTypeLib.IBasicAudio 'calls to set up rotoscope media player
	Public RotoScopeBasicVideo As QuartzTypeLib.IBasicVideo
	Public RotoScopeMediaEvent As QuartzTypeLib.IMediaEvent
	Public RotoScopeVideoWindow As QuartzTypeLib.IVideoWindow
	Public RotoScopeMediaControl As QuartzTypeLib.IMediaControl
	Public RotoScopeMediaPosition As QuartzTypeLib.IMediaPosition
	Public RotoScopeLoadedYesNO As Boolean 'a flag to say if media has been loaded into the rotoscope
	Public RotoScopeActiveYesNo As Boolean 'a flag to say if the rotoscope window is open
	Public RotoScopeSyncYesNo As Boolean 'A Flag to say if the rotoscope is to be synced to the capture
	Public dx_VideoWindow As QuartzTypeLib.IVideoWindow
	
	
	
	Public EditorListPosition As Integer 'The current frame that is showing in the editor. It is used throughout the editor to store the current frame
	'that is showing and also to syncronise the audio in slow playback mode. It starts at zero for the first position.
	'therefore you need to add one to determine the frame number.
	Public WindowAtFront As String 'holds either PlayBack" or "Live" ie which window is at the front
	Public TimePosition As Double 'The time in seconds where the playback window is (used in slider control)
	Public PlayStatus As String 'Set to "Playing","Stopped" or "Looping" depending on what the main animation media player is doing
	Public RapidStatus As String 'EDITOR FORM Set to "Playing","Stopped" or "Looping" depending on what the editor rapid media player is doing
	Public SlowStatus As String 'EDITOR FORM Set to "Playing","Stopped" or "Looping" depending on what the main animation is doing
	Public LiveTime As Integer 'A counter to hold the loop to live time  ( see frmAnimator main loop)
	Public ShowingLive As Boolean 'Goes to true when the playback is looping and has flipped to the live window
	Public ProgCurrentTime As Integer 'The current gettime used in playback looping
	Public ShutterMacroYesNo As Boolean 'A flag as to whether the shutter macro is active or not
	Public MacroFilename As String 'Holds the current macro filename
	Public TimeLapseOnYesNo As Boolean 'Whether time lapse mode is running or not
	Public TimeLapseDelay As Integer 'The time in seconds between each shutter release
	Public IsCapturing As Boolean 'Goes to true when the program is in capturing / saving cycle. Used to stop timelapse buffering captures
	Public FrameSliderTop As Integer 'Positions of the Frame slider control on the buttons form
	Public FrameSliderLeft As Integer
	Public FrameSliderWidth As Integer
	Public FrameSliderHeight As Integer
	Public XsheetWidth As Integer 'The width of the X sheet in Pixels
	Public XsheetHeight As Integer 'The height of the X sheet in pixels
	Public XsheetOnOff As Boolean 'Whether the user wants the X sheet on or off
	Public XSheetName As String 'The name of the X sheet"
	Public XSheetOffset As Integer 'How many frames the X sheet and Soundtrack is offset from the frames
	Public SoundTrackName As String 'The name of the audio soundtrack file
	Public SoundTrackOnOff As Boolean 'Whether the audio soundtrack is played or not
	Public SoundTrackAccuracy As Double 'The tolerance +/- that the sounctrack can drift before being syncronised in seconds
	Public Phoneme() As String 'A string array holding the phoneme texts loaded from the source file (xsheet text data)
	Public MouthShapeOnOff As Boolean 'Whether to display mouth shapes in Exposure sheet
	Public XSheetActiveYesNo As Boolean 'Whether the exposure sheet is showing or not
	Public LastXSheetPos As Integer 'Stores the last X sheet position, so it is not redrawn if it doesn't need to do. This avoids flickering
	Public ExposureTopPos As Integer 'The top frame to be displayed in the exposure sheet
	Public CurrentlyActiveWindow As Integer 'The handle of the currently active child window
	Public ErrorCodeNo As String 'The error code generated at each point so it can be reported
	Public ErrorDescription As String 'A description of the current error
	Public TargetEmail As String 'The target email address you want to send the error reports to
	Public TextBody As String 'This is used to generate the output data for saving settings and error reporting
	Public ErrorLoggingYesNO As Boolean
	Public ReportNotReady As String 'Used in editor, whether rapid playback is ready
	Public ChromaKeyingYesNO As Boolean 'Whether the user wants chroma keying on or not
	Public ChromaType As String 'What type of chroma keying, off, red , green or blue
	Public ChromaBackground As String 'The filename of the chroma background image
	Public Rendering As Boolean 'if the chroma key is rendering this prevents it being called again
	Public SafeAreaYesNo As Boolean 'Safe area rectangle on the live window
	Public SafeAreaWidth As Integer 'Safe area rectangle width
	Public SafeAreaHeight As Integer 'Safe area rectangle height
	Public SafeAreaColour As Integer 'Safe area rectangle border colour
	
	Public Sub SetDefaults() 'Sets some default variables
		ErrorLoggingYesNO = False
		Version = "2.06" 'Set the version number of the software
		ErrorCodeNo = "00.00" 'Set Error Code, ie no errors currently
		OnionMode = -1 'Set the onion skinning mode to off
		TitleHeight = 27 'Set the height of the title bar on the capture and playback windows
		FrameNum = 0 'Set the number of frames currently captured to zero
		AspRatio = 4 / 3 'Set a default aspect ratio
		FrameSliderTop = 49 'Positions of the Frame slider control on the buttons form
		FrameSliderLeft = 70
		FrameSliderWidth = 283
		FrameSliderHeight = 13
		XsheetWidth = 257 'Width of the Exposure Sheet (frmXsheet)
		SoundTrackAccuracy = 0.1 'How much the audio can drift in seconds before being resynced.
		TargetEmail = "HeliumFrogFeedback@googlemail.com" 'The target email address you want to send the error reports to
		
		'Set the initial variables which will be overwritten if a User_Settings.txt file is present
		LastCamera = "NOCAMERA"
		SavePath = My.Application.Info.DirectoryPath & "\Captured_Frames\"
		XSheetName = "No X Sheet Selected"
		SoundTrackName = "No Soundtrack Selected"
		SoundTrackOnOff = True
		XSheetOffset = 0
		Skin = "Cat_Black"
		CaptureSound = "Camera_Click"
		OnionLevel = 64
		LoopLength = 15
		CaptureQuality = 85
		FrameAvgDepth = 5
		FrameAvgDelay = 10
		FPS = 15
		TimeLapseDelay = 5000
		SoundsOnOff = True
		MouthShapeOnOff = True
		OutputBmpFramesYesNo = False
		OutputJpgFramesYesNo = False
		OutputTifFramesYesNo = False
		OutputGifFramesYesNo = False
		OutputPngFramesYesNo = False
		
		ChromaKeyingYesNO = False
		ChromaType = "Off"
		Rendering = False 'Chroma key routine is not currently rendering
		ChromaBackground = "No Background Image Selected"
		
		SafeAreaYesNo = False
		SafeAreaWidth = 800
		SafeAreaHeight = 600
		SafeAreaColour = &H4080FF
		
		FrameNumberStampYesNo = False
		JpegQuality = 100
		NumFramesPerClick = 1
		
		FormAnimatorLeft = 50
		FormAnimatorTop = 80
		FormCaptureWidth = 60
		FormCaptureTop = 1
		FormCaptureLeft = 1
		Ascii01 = 32 'capture1
		Ascii02 = 13 'capture2
		Ascii03 = 103 'tostart
		Ascii04 = 100 'back1
		Ascii05 = 98 'stop
		Ascii06 = 110 'play
		Ascii07 = 102 'forward1
		Ascii08 = 105 'toend
		Ascii09 = 96 'loop
		Ascii10 = 88 'exit
		Ascii11 = 111 'toggle
		Ascii12 = 84 'timelapse
		Ascii13 = 106 'onion
		Ascii14 = 83 'settings
		Ascii15 = 85 'utilities
		Ascii16 = 69 'editor
		Ascii17 = 82 'rotoscope
		Ascii18 = 68 'undo
		ShutterMacroYesNo = False
		MacroFilename = "Select Macro filename"
		ChromaKeyingYesNO = False
		Threashold = 50
		Feather = 10
		WhiteLimit = 255
		BlackLimit = 0
	End Sub
End Module